—— AI 幫你寫碼,但別讓它也幫駭客寫漏洞。
對象:AI 工程師、DevSecOps、資安團隊、研發主管
關鍵詞:生成式程式碼風險|SAST/DAST|依賴供應鏈|SBOM|CI/CD 安全
💬 序:為何要把生成式代碼當成攻擊面?
生成式 AI(Copilot、ChatGPT、Codeium 等)能顯著提速,但同時也會把「網路上有缺陷的範例」和「不安全習慣」帶進你的 codebase。
短期看是效率,長期看可能是累積性的安全負債──被攻擊者利用、被稽核抓到、或在生產環境造成資安事件。
🔍 四大風險類型(工程觀點)
-
危險 API / 不安全函式:例如
eval, exec, pickle.load, 未妥善使用的反序列化。
-
錯誤的安全預設:例如預設開放 CORS、未檢查 SQL 參數即拼接字串。
-
依賴供應鏈污染:typosquat、未簽章的套件或惡意套件被引入。
-
版權與授權衝突:AI 產生代碼可能含有受限制授權(GPL、AGPL)片段,導致商用風險。
🛡️ 防護策略(從流程到工具)
-
流程層(Policy):把「AI 生成代碼必須 PR + code review」寫入團隊規範與 CI Gate。
-
檢測層(Detect):在 CI 上加入 SAST(Semgrep、Bandit)、SBOM 生成、依賴掃描(OWASP Dependency-Check、Snyk)。
-
防護層(Prevent):在 IDE/Plugin 層加警示,禁用危險 API 的快速補全模板。
-
回應層(Respond):發現高嚴重性漏洞時自動阻斷合併,並列入安全待辦(ticket)。
🧰 工具與實作建議(範例)
CI 範例:把 Semgrep 與 Safety 串進 pipeline
# .github/workflows/ci.yml (片段)
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run semgrep
uses: returntocorp/semgrep-action@v1
- name: Run safety (Python deps)
run: pip install safety && safety check
依賴追蹤:產生 SBOM
pip install cyclonedx-bom
cyclonedx-py --output sbom.json
Semgrep 規則(範例:阻擋 eval/exec)
rules:
- id: no-eval-exec
patterns:
- pattern: eval(...)
- pattern: exec(...)
message: "禁止使用 eval/exec,請改用安全替代或明確審核"
severity: ERROR
依賴信任:Sigstore / Sigstore Verify(簽章驗證)
- 在 CI 中對關鍵套件或二進位執行簽章驗證;對未簽章的第三方庫提高審核門檻。
✅ 實務上線清單(Checklist)
- [ ] 所有 AI 生成代碼必須走 Pull Request + 必要 Reviewer(含安全審查)
- [ ] CI 中納入 SAST(Semgrep/Bandit)、依賴掃描、SBOM 生成
- [ ] 建立危險 API 黑名單與 semgrep 規則
- [ ] 針對第三方依賴實施簽章驗證或白名單策略
- [ ] 定期(每月)用 fuzzer 或 DAST 跑一遍生成的 web/service 介面
📊 指標(KPI)建議
-
AI-PR Coverage:AI 產碼經 PR 的比例(目標 100%)
-
SAST Block Rate:CI 中阻擋的高風險問題比例
-
Dependency Risk Score:依賴的整體風險分數
-
SBOM Coverage:服務產生 SBOM 的比例
-
Vulnerability Remediation Time:修補生成式代碼漏洞的平均時間
🧪 小劇場(工程師幽默)
PM:AI 幫我直接合併,速度超快!
你:合併得快,恐慌得也快——等漏洞爆發時我們就忙著修火。
🎯 結語
生成式 AI 是研發的加速器,但安全責任仍在我們手上。把「AI 生成代碼」納入 DevSecOps、把安全檢查自動化、把依賴管理制度化,才能把效率紅利變成長期可持續的優勢。
🔮 明日預告:Day 27|AI 驅動的社交工程攻擊
探討生成式 AI 如何強化釣魚郵件、語音詐騙與深偽攻擊,企業如何防範。